From 4392e451e55defccb9cfa24d266adc2fb5674d5d Mon Sep 17 00:00:00 2001 From: "kaf24@freefall.cl.cam.ac.uk" Date: Fri, 22 Oct 2004 16:38:11 +0000 Subject: [PATCH] bitkeeper revision 1.1159.130.6 (41793773TFex2kvneKZIR5JlCHOzQQ) Bugfixes. --- xen/arch/x86/memory.c | 2 +- xen/common/event_channel.c | 18 +++++++++++++++--- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/xen/arch/x86/memory.c b/xen/arch/x86/memory.c index 30688db3da..ad1d6f0ef5 100644 --- a/xen/arch/x86/memory.c +++ b/xen/arch/x86/memory.c @@ -403,7 +403,7 @@ get_page_from_l1e( return ((l1v & _PAGE_RW) ? get_page_and_type(page, d, PGT_writable_page) : - get_page(d)); + get_page(page, d)); } diff --git a/xen/common/event_channel.c b/xen/common/event_channel.c index fe47b9e524..ca2eb46f12 100644 --- a/xen/common/event_channel.c +++ b/xen/common/event_channel.c @@ -167,9 +167,12 @@ static long evtchn_bind_interdomain(evtchn_bind_interdomain_t *bind) break; case ECS_INTERDOMAIN: - rc = ((d1->event_channel[port1].u.interdomain.remote_dom != d2) || - (d1->event_channel[port1].u.interdomain.remote_port != port2)) ? - -EINVAL : 0; + if ( d1->event_channel[port1].u.interdomain.remote_dom != d2 ) + ERROR_EXIT(-EINVAL); + if ( (d1->event_channel[port1].u.interdomain.remote_port != port2) && + (bind->port2 != 0) ) + ERROR_EXIT(-EINVAL); + port2 = d1->event_channel[port1].u.interdomain.remote_port; goto out; default: @@ -189,6 +192,15 @@ static long evtchn_bind_interdomain(evtchn_bind_interdomain_t *bind) ERROR_EXIT(-EINVAL); break; + case ECS_INTERDOMAIN: + if ( d2->event_channel[port2].u.interdomain.remote_dom != d1 ) + ERROR_EXIT(-EINVAL); + if ( (d2->event_channel[port2].u.interdomain.remote_port != port1) && + (bind->port1 != 0) ) + ERROR_EXIT(-EINVAL); + port1 = d2->event_channel[port2].u.interdomain.remote_port; + goto out; + default: ERROR_EXIT(-EINVAL); } -- 2.30.2